package com.mihu.stmall.manager.service.impl;

import com.mihu.stmall.manager.entiy.Goods;
import com.mihu.stmall.manager.entiy.GoodsPic;
import com.mihu.stmall.manager.mapper.GoodsPicMapper;
import com.mihu.stmall.manager.service.GoodsPicService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

@Service("GoodsPicService")
public class GoodsPicServiceImpl implements GoodsPicService {
    @Resource
    private GoodsPicMapper goodsPicMapper;

    /*
     REQUIRED(0), 支持 若事务已开启 则在当前事务内执行 否则新建事务
    SUPPORTS(1),  支持 若事务已开启 则在当前事务内执行 否则在非事务状态下执行
    MANDATORY(2),  支持 若事务已开启 则在当前事务内执行 否则抛异常
    上面三个支持当前事务

    下面三种不支持当前事务
    REQUIRES_NEW(3), 不支持 若事务已开启 将事务挂起 新建事务执行 否则新建事务并在事务内执行
    NOT_SUPPORTED(4), 不支持 若事务已开启 将事务挂起 以非事务执行 否则在非事务状态下执行
    NEVER(5), 不支持  如果当前已开启事务 抛异常 否则以非事务状态运行


    NESTED(6); 事务嵌套 如果已开启事务 则在事务内创建一个子事务

     */
    @Override
    @Transactional(
            propagation = Propagation.REQUIRED
    )
    public int addPatch(List<GoodsPic> pics) {
        return goodsPicMapper.insert(pics);
    }

    @Override
    public int removeByGoodsId(Integer goodsId) {
        return goodsPicMapper.deleteByGoodsId(goodsId);
    }

    @Override
    public List<GoodsPic> selectByGoodsId(Integer goodsId) {
        return goodsPicMapper.selectByGoodsId(goodsId);
    }

    @Override
    @Transactional(
            propagation = Propagation.REQUIRED
    )
    public int edit(List<GoodsPic> pics,List<GoodsPic> goodsPic) {
        return goodsPicMapper.update(pics,goodsPic);
    }

}
